package _98综合练习;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableModel;

public class MainFrame extends JFrame implements ActionListener {
	// 选择合适的容器存放以下信息
	// 部门信息
	// 1.工程部
	// 2.财务部
	Map<Integer, String> type = new HashMap<>();
	// 员工信息
	// 工号 员工姓名 性别
	List<Employee> emp = new ArrayList<>();
	// 薪水信息
	// 编号 工号 月份 工资
	List<Salary> sa = new ArrayList<>();
	// 能够增删改查信息，内置一些数据
	// 管理员登录
	List<Student> stus = new ArrayList<>();
	JLabel Jtitle;

	JLabel l1;
	JLabel l2;
	JLabel l3;

	JTextField t1;
	JTextField t2;
	JTextField t3;

	JTable table;

	public MainFrame() {
		// 布局设置为null 绝对布局
		this.setLayout(null);

		JPanel p1 = new JPanel();
		p1.setBounds(5, 10, 220, 175);
		this.add(p1);
		p1.setLayout(null);
		p1.setVisible(true);
//		JPanel p2 = new JPanel();
//		p2.setBounds(10, 10, 680, 500);
//		p2.setVisible(false);
		Jtitle = new JLabel("员工信息");
		Jtitle.setBounds(300, 10, 100, 25);
		this.add(Jtitle);
		// 学号 姓名 年龄
		l1 = new JLabel("工号");
		l2 = new JLabel("姓名");
		l3 = new JLabel("性别");
		l1.setBounds(20, 50, 100, 25);
		l2.setBounds(20, 100, 100, 25);
		l3.setBounds(20, 150, 100, 25);
		p1.add(l1);
		p1.add(l2);
		p1.add(l3);

		t1 = new JTextField();
		t2 = new JTextField();
		t3 = new JTextField();

		p1.add(t1);
		p1.add(t2);
		p1.add(t3);
		t1.setBounds(120, 50, 100, 25);
		t2.setBounds(120, 100, 100, 25);
		t3.setBounds(120, 150, 100, 25);

		// 添加按钮
		JButton btn1 = new JButton("添加");
		this.add(btn1);
		btn1.setBounds(120, 200, 100, 25);
		// 给按钮添加一个事件监听对象
		btn1.addActionListener(this);

		JButton btn2 = new JButton("删除");
		this.add(btn2);
		btn2.setBounds(120, 230, 100, 25);
		// 给按钮添加一个事件监听对象
		btn2.addActionListener(this);

		JButton btn3 = new JButton("查找");
		this.add(btn3);
		btn3.setBounds(120, 260, 100, 25);
		// 给按钮添加一个事件监听对象
		btn3.addActionListener(this);

		JButton btn4 = new JButton("修改");
		this.add(btn4);
		btn4.setBounds(120, 290, 100, 25);
		// 给按钮添加一个事件监听对象
		btn4.addActionListener(this);
		// 表格
		JButton btn5 = new JButton("员工信息");
		JButton btn6 = new JButton("部门信息");
		JButton btn7 = new JButton("薪水信息");
		this.add(btn5);
		this.add(btn6);
		this.add(btn7);
		btn5.setBounds(100, 500, 100, 25);
		btn6.setBounds(210, 500, 100, 25);
		btn7.setBounds(320, 500, 100, 25);
		// 给按钮添加一个事件监听对象
		btn5.addActionListener(this);
		btn6.addActionListener(this);
		btn7.addActionListener(this);
		// 表头内容
		String[] columnNames = { "工号", "员工姓名", "性别" };
		// 表格数据(二维字符串数组)
		String[][] datas = {};
		// 创建表格
		TableModel m = new DefaultTableModel(datas, columnNames);
		table = new JTable(m);
		// 滚动面板
		JScrollPane scrollPane = new JScrollPane(table);
		scrollPane.setBounds(250, 50, 400, 400);
		this.add(scrollPane);

	}

	@Override
	public void actionPerformed(ActionEvent e) {
		// 如果按钮没有设置ActionCommand
		// ActionCommand就是按钮的文字
		// System.out.println(e.getActionCommand() + "按钮被按了");
		if (e.getActionCommand().equals("员工信息")) {
			Jtitle.setText("员工信息");
			// add();
		} else if (e.getActionCommand().equals("部门信息")) {
			Jtitle.setText("部门信息");
			// delete();
		} else if (e.getActionCommand().equals("薪水信息")) {
			Jtitle.setText("薪水信息");
			// search();
		}
		if (e.getActionCommand().equals("添加")) {
			add();
		} else if (e.getActionCommand().equals("删除")) {
			delete();
		} else if (e.getActionCommand().equals("查找")) {
			search();
		} else if (e.getActionCommand().equals("修改")) {
			update();
		}

	}

	void update() {
		// 获取到用户输入的信息
		// int id = Integer.parseInt(t1.getText());
		String id = t1.getText();
		String name = t2.getText();
		// int age = Integer.parseInt(t3.getText());
		String sex = t3.getText();
		Iterator<Employee> it = emp.iterator();
		while (it.hasNext()) {
			Employee emp = it.next();
			if (id.equals(emp.eid)) {
				emp.ename = name;
				emp.esex = sex;
				break;
			}
		}
		showDataToTable();
	}

	void search() {
		// 获取到用户输入的信息
		// int id = Integer.parseInt(t1.getText());
		String id = t1.getText();

		Iterator<Employee> it = emp.iterator();
		while (it.hasNext()) {
			Employee emp = it.next();
			if (id.equals(emp.eid)) {
				String[] columnNames = { "工号", "员工姓名", "性别" };
				// 将容器中数据，放入二维字符串数组
				String[][] datas = new String[1][3];
				datas[0][0] = emp.eid;
				datas[0][1] = emp.ename;
				datas[0][2] = "" + emp.esex;
				TableModel m = new DefaultTableModel(datas, columnNames);
				table.setModel(m);
				System.out.println(emp);
				break;
			}
		}
	}

	void delete() {
		// int id = Integer.parseInt(t1.getText());
		String id = t1.getText();
		// 从容器中删除
		Iterator<Employee> it = emp.iterator();
		while (it.hasNext()) {
			Employee emp = it.next();
			if (id.equals(emp.eid)) {
				it.remove();
				break;
			}
		}

		showDataToTable();

	}

	void add() {
		// 获取到用户输入的信息
		// int id = Integer.parseInt(t1.getText());
		String id = t1.getText();
		String name = t2.getText();
		// int age = Integer.parseInt(t3.getText());
		String sex = t3.getText();

		// 对象
		// Student stu = new Student(id, name, age);
		Employee em = new Employee(id, name, sex);
		// 放入容器
		emp.add(em);

		showDataToTable();
	}

	// 根據容器裡的內容重新生成表格的數據，設定到表格
	void showDataToTable() {
		// 把stus显示到界面
		// 表头
		if (Jtitle.getText().equals("员工信息")) {

		}
		String[] columnNames = { "学号", "姓名", "年龄" };
		// 将容器中数据，放入二维字符串数组
		String[][] datas = new String[emp.size()][3];
		for (int i = 0; i < emp.size(); i++) {
			Employee e = emp.get(i);
			datas[i][0] = "" + e.eid;
			datas[i][1] = e.ename;
			datas[i][2] = "" + e.esex;
		}
		TableModel m = new DefaultTableModel(datas, columnNames);
		table.setModel(m);
	}

}
